from typing import List
import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)
# 好吧，没有任何思路


class Solution:
    def isPossible(self, nums: List[int]) -> bool:
        """暴力解法
        1个数有3种可能，一个新的开头，在数组中，在数组的结尾（数组要>=3)

        """

        def is_valid(arr):
            if not arr:
                return False
            for l in arr:
                if len(l) < 3:
                    return False
            return True

        def helper(start, arr):
            # 返回条件
            logging.info(arr)
            if is_valid(arr) and start == len(nums):
                print("ok", arr)
                return True

            # 做选择
            for i in range(start, len(nums)):
                # 做头
                print(nums[i])
                helper(i + 1, [*arr, [nums[i]]])
                # 在已有的数组中选一个做中间
                sign = False
                for j in range(len(arr)):
                    if nums[i] - 1 == arr[j][-1]:
                        sign = True
                        arr[j].append(nums[i])
                        helper(i + 1, arr)
                        arr[j].remove(nums[i])
                if not sign:
                    return

        helper(0, [])


if __name__ == "__main__":
    res = Solution().isPossible([1, 2, 3, 3, 4, 5])
    print(res)

